struct _GtkCssProviderPrivate
{
GScanner *scanner;
- gchar *filename;
-
- const gchar *buffer;
- const gchar *value_pos;
GHashTable *symbolic_colors;
css_provider_reset_parser (css_provider);
g_scanner_destroy (priv->scanner);
- g_free (priv->filename);
g_ptr_array_free (priv->selectors_info, TRUE);
priv->state = NULL;
scanner_apply_scope (priv->scanner, SCOPE_SELECTOR);
- priv->value_pos = NULL;
g_slist_foreach (priv->cur_selectors, (GFunc) selector_path_unref, NULL);
g_slist_free (priv->cur_selectors);
priv = css_provider->priv;
/* Use relative path to the current CSS file path, if any */
- if (priv->filename)
- dirname = g_path_get_dirname (priv->filename);
+ if (priv->scanner->input_name)
+ dirname = g_path_get_dirname (priv->scanner->input_name);
else
dirname = g_get_current_dir ();
if (end && *end)
{
- /* Set error position in the scanner
- * according to what we've parsed so far
- */
- priv->value_pos += (end - value_str);
parsed = FALSE;
gtk_css_provider_error_literal (css_provider,
if (priv->selectors_info->len > 0)
g_ptr_array_remove_range (priv->selectors_info, 0, priv->selectors_info->len);
-
- g_free (priv->filename);
- priv->filename = NULL;
}
+
static gboolean
parse_stylesheet (GtkCssProvider *css_provider,
GError **error)
gtk_css_provider_reset (css_provider);
- priv->scanner->input_name = "-";
- priv->buffer = data;
+ priv->scanner->input_name = NULL;
g_scanner_input_text (priv->scanner, data, (guint) length);
- g_free (priv->filename);
- priv->filename = NULL;
- priv->buffer = NULL;
-
return parse_stylesheet (css_provider, error);
}
{
GtkCssProviderPrivate *priv;
GError *internal_error = NULL;
+ char *path;
gchar *data;
gsize length;
gboolean ret;
gtk_css_provider_reset (css_provider);
- priv->filename = g_file_get_path (file);
-
- priv->scanner->input_name = priv->filename;
- priv->buffer = data;
+ path = g_file_get_path (file);
+ priv->scanner->input_name = path;
g_scanner_input_text (priv->scanner, data, (guint) length);
ret = parse_stylesheet (css_provider, error);
- priv->buffer = NULL;
+ g_free (path);
+ priv->scanner->input_name = NULL;
g_free (data);
return ret;
data = "";
if (reset)
- {
- gtk_css_provider_reset (css_provider);
- priv->filename = g_strdup (path);
- }
+ gtk_css_provider_reset (css_provider);
- priv->scanner->input_name = priv->filename;
- priv->buffer = data;
+ priv->scanner->input_name = path;
g_scanner_input_text (priv->scanner, data, (guint) length);
ret = parse_stylesheet (css_provider, error);
- priv->buffer = NULL;
+ priv->scanner->input_name = NULL;
+
g_mapped_file_unref (mapped_file);
return ret;